A function that receives another function as an argument or that returns a new function or both is called Higher-order function. Higher-order functions are only possible because of the First-class function. This concept is widely used in functional programming.
Some examples of higher-order functions.
- Map, reduce, filter
 - forEach
 - Sort, find, some and every